//打卡
class Solution {
public:
    int maxFrequency(vector<int>& nums, int k, int numOperations) {
        unordered_map<int, int> cnt;
        map<int, int> diff; //差分
        for(int x:nums) {
            cnt[x]++;
            diff[x]; //插入
            diff[x-k]++; diff[x+k+1]--;
        }
        int ans=0, sum=0; //一共有多少个数可以变成目标值
        for(auto &[x, d]:diff){
            sum+=d; 
            ans=max(ans, cnt[x]+min(sum-cnt[x] ,numOperations)); //最终答案最多接收自己本身和多个可操作转移值
        }
        return ans;
    }
};